package com.api.entity;


import com.api.log.FieldAnnotation;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import com.mybatisflex.core.activerecord.Model;
import java.util.Date;


import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

/**
* 系统用户 实体类。
*
* @author yangsf
* @since 2024-10-22
*/
@Accessors(chain = true)
@Data(staticConstructor = "create")
@EqualsAndHashCode(callSuper = true)
@Table("tb_user")
public class User extends Model<User> {

    private static final long serialVersionUID = 1L;

    @Id(keyType = KeyType.Auto)
    @FieldAnnotation("id")
    private Long id;

    /**
    * 账号
    */
    @FieldAnnotation("账号")
    private String loginName;

    /**
    * 用户手机号
    */
    @FieldAnnotation("用户手机号")
    private String userTele;

    /**
    * 用户名
    */
    @FieldAnnotation("用户名")
    private String userName;

    /**
    * 用户昵称
    */
    @FieldAnnotation("用户昵称")
    private String nickName;

    /**
    * 用户头像
    */
    @FieldAnnotation("用户头像")
    private String avatar;

    /**
    * 性别：未知 男 女
    */
    @FieldAnnotation("性别：未知 男 女")
    private String sex;

    /**
    * 密码
    */
    @FieldAnnotation("密码")
    private String password;

    /**
    * 加密盐值
    */
    @FieldAnnotation("加密盐值")
    private String salt;

    /**
    * token
    */
    @FieldAnnotation("token")
    private String token;

    /**
    * 微信openId
    */
    @FieldAnnotation("微信openId")
    private String wxOpenId;

    /**
    * 微信unionId
    */
    @FieldAnnotation("微信unionId")
    private String wxUnionId;

    /**
    * 状态：0.注销 1.正常 2.锁定
    */
    @FieldAnnotation("状态：0.注销 1.正常 2.锁定")
    private Integer status;

    /**
    * 备注
    */
    @FieldAnnotation("备注")
    private String remark;

    /**
    * 创建时间
    */
    @Column(onInsertValue = "now()")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @FieldAnnotation("创建时间")
    private Date createTime;

    /**
    * 创建人
    */
    @FieldAnnotation("创建人")
    private Long createId;

    /**
    * 更新时间
    */
    @Column(onInsertValue = "now()", onUpdateValue = "now()")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @FieldAnnotation("更新时间")
    private Date updateTime;

    /**
    * 更新人
    */
    @FieldAnnotation("更新人")
    private Long updateId;

    @Column(value = "部门ID",ignore = true)
    private Long deptId;
    @Column(value = "部门名称",ignore = true)
    private String deptName;
    @Column(value = "角色ID",ignore = true)
    private Long roleId;
    @Column(value = "角色名称",ignore = true)
    private String roleName;

}
